MongoDB Atlas を AWS Marketplace でサブスクライブし、利用してみた
はじめに
AWSを利用しつつ、DBとしてMongoDB Atlasを使いたい場合、AWS Marketplace からサブスクライブし利用することができます。
サブスクライブすることで、Atlasの利用料金の支払いは、AWSの請求経由で支払うことができます。
MongoDB AtlasをAWS Marketplaceでサブスクライブし、MongoDB Atlasアカウント作成後、DBに接続するまでをご説明します。
事前準備
- AWSアカウントを作成しておく
- MongoDB Atlasのアカウントは、未作成で構いません。
MongoDB AtlasをAWS Marketplaceでサブスクライブする
AWSアカウントにログイン後、AWSのMongoDB Atlasのサイトから、[AWS Marketplace を無料で試す]をクリックします。
AWS Marketplaceの MongoDB Atlasに遷移されました。[View purchase options]をクリックします。
[Subscribe]をクリックすると、AWS側の設定は、完了です。
ちなみに、こちらでサブスクライブした製品一覧を確認することができます
MongoDB Atlasのアカウント作成
先程の画面のうち、[Set up your account]をクリックすると、MongoDB Atlasのサイトに遷移します。
今回は、Googleアカウントを利用してMongoDB Atlasのアカウントを作成しますので、Googleをクリックします。
これでMongoDB Atlasのアカウントが作成されました。
MongoDB Atlasの支払いは、AWSの請求経由で支払われることが確認できますね。
DBを作成
DBを作成します。
[Build a Database]をクリックします。
今回は、無料で利用できる共有版を作成します。
ProviderをAWSとし、Regionは、Tokyo (ap-northeast-1) を選択し、[Create]をクリックします。
設定方法は、以下の通りです。
- 接続方法
- ユーザー名とパスワード
- ユーザー名とパスワードを入力し、[Create User]をクリックします
- ユーザー名とパスワード
- どこから接続するか
- クラウド環境
- セキュリティオプション:IP制限
- [Add My Current IP Address]をクリックすると、自分が利用しているIPアドレスからのみDBを利用できます。
セキュリティ向上のため、IP制限は、必ず設定しましょう。
DBが作成されました。
DBにアクセスしてみる
ローカルからDBにアクセスしてみます
DBの[Connect]をクリックします
[Shell]を選択します
macOSの場合、下記のコマンドで、Macにmongoshをインストールし、ローカルからMongoDBに接続できます。
$ brew install mongosh $ mongosh "mongodb+srv://cluster0.ouulxmk.mongodb.net/myFirstDatabase" --apiVersion 1 --username admin Atlas atlas-f2lgff-shard-0 [primary] myFirstDatabase> show databases admin 280.00 KiB local 1.21 GiB
DB一覧を確認することができました。
IP制限を確認
許可しているIPを削除すると、DBに接続できないことを確認してみます
許可しているIPを[DELETE]します。
再度DBにローカルからアクセスしようとすると、MongoServerSelectionError
となりアクセスできませんでした。
$ mongosh "mongodb+srv://cluster0.ouulxmk.mongodb.net/myFirstDatabase" --apiVersion 1 --username admin Enter password: ********* Current Mongosh Log ID: xxxxxxxxxxxxxxxxxx Connecting to: mongodb+srv://<credentials>@cluster0.ouulxmk.mongodb.net/myFirstDatabase?appName=mongosh+1.8.0 MongoServerSelectionError: connection <monitor> to xx.xx.xx.xx:27017 closed
IP制限が機能していることが分かりました。